package com.zzy.system.domain;

import com.alibaba.fastjson2.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.zzy.common.core.domain.BaseEntity;
import lombok.Data;

import java.math.BigDecimal;

/**
 * 订单实体类，用于表示订单的各种属性信息。
 */
@Data
public class SkuStock extends BaseEntity {
    //主键 自增
    private Integer skuStockId;
    private static final long serialVersionUID = 1L;
    // 商品spu_id，唯一标识每个商品的SPU（Standard Product Unit，标准化产品单元）
    @JSONField(name = "spu_id")
    private String spuId;

    // 商品spu名称，展示给外部的商品具体名称，便于识别和区分不同商品
    @JSONField(name = "spu_name")
    private String spuName;

    // 一级分类id，用于标识商品所属的一级分类，方便进行分类管理和筛选等操作
    @JSONField(name = "category1_id")
    private String category1Id;

    // 一级分类名，直观展示商品所属的一级分类名称，更易于理解和查看分类信息
    @JSONField(name = "category1_name")
    private String category1Name;

    // 二级分类id，进一步细分商品所属的分类，辅助更细致的商品分类管理与查询操作
    @JSONField(name = "category2_id")
    private String category2Id;

    // 二级分类名，对应的二级分类具体名称，帮助准确识别商品在分类体系中的位置
    @JSONField(name = "category2_name")
    private String category2Name;

    // 库存，用于记录商品当前的库存数量，以浮点数形式存储，可根据实际业务场景调整精度等要求
    @JSONField(name = "stock")
    private float stock;

    //重量
    private BigDecimal weight;

    // 库存均价，单位元，表示商品库存的平均价格，在涉及成本计算、定价等业务时会用到
    @JSONField(name = "avg_price")
    private float avgPrice;

    // 冻结库存，记录因某些业务原因（如订单占用、特殊操作等）暂时不能使用的库存数量
    @JSONField(name = "frozen_stock")
    private float frozenStock;

    // 基本单位，用于表示商品计量的基本单位，例如个、件、千克等
    @JSONField(name = "std_unit_name")
    private String stdUnitName;

    // 可用库存，即当前实际可用于销售等操作的库存数量，通常是总库存减去冻结库存得到
    @JSONField(name = "available_stock")
    private float availableStock;

}